package com.indexingsystem.system.service;

import java.util.List;

import com.indexingsystem.boss.Vo.MagazinesYearListReqVo;
import com.indexingsystem.boss.Vo.MenuPavilionColumnsVo;
import com.indexingsystem.boss.Vo.PavilionColumnsSortVo;
import com.indexingsystem.boss.Vo.RelationsReqVo;
import com.indexingsystem.boss.Vo.ResCategoryReqVo;
import com.indexingsystem.boss.Vo.SiteResCateReqVo;
import com.indexingsystem.boss.Vo.TreeReqVo;
import com.indexingsystem.boss.Vo.WebsiteResListReqQueryVo;
import com.indexingsystem.boss.common.PagedResult;
import com.indexingsystem.boss.entity.MenusRelationsInfo;
import com.indexingsystem.boss.entity.PavilionColumns;
import com.indexingsystem.boss.entity.PavilionInfo;
import com.indexingsystem.boss.entity.ResourceByMagazines;
import com.indexingsystem.boss.entity.ResourceYearInfo;
import com.indexingsystem.boss.entity.ResourcesList;

public interface IPavilionsCommonService {

	/**
	 * 获取分馆信息
	 * 
	 * @return
	 */
	List<PavilionInfo> getPavilionsList();

	/**
	 * 获取资源分类信息
	 * 
	 * @param menuId
	 * @return
	 */
	MenusRelationsInfo getMenusRelationsInfo(RelationsReqVo relationsReqVo) throws Exception;

	/**
	 * 图书、动画、非洲动物资源列表获取.
	 * 
	 * @param relationsReqVo
	 * @return
	 */
	List<MenuPavilionColumnsVo> getMenusResourcesList(RelationsReqVo relationsReqVo);

	/**
	 * 获取图书、动画、非洲动物资源列表总数.
	 * 
	 * @param relationsReqVo
	 * @return
	 */
	Integer getMenusResourcesListMaxCount(RelationsReqVo relationsReqVo);

	/**
	 * 获取资源列表信息总数
	 * 
	 * @param treeReqVo
	 * @return
	 */
	Integer getResourcesListCount(String id);

	/**
	 * 获取资源列表信息
	 * 
	 * @param resCategoryId
	 * @return
	 */
	PagedResult<ResourcesList> getResourcesList(TreeReqVo treeReqVo);

	/**
	 * 获取报刊资源详情
	 * 
	 * @param resCategoryReqVo
	 * @return
	 */
	ResourceByMagazines getResourceByMagazines(ResCategoryReqVo resCategoryReqVo) throws Exception;

	/**
	 * 通过年及资源分类id获取该分类下同一年的报刊资源集合.
	 * 
	 * @param siteResCateReqVo
	 * @return
	 */
	PagedResult<ResourceYearInfo> getResByMagazinesTypeInfoByYear(Integer pageNo, Integer pageSize, SiteResCateReqVo siteResCateReqVo);

	/**
	 * 获取同一个分类的其它绘本或不为同一个分类的其它分类的绘本集合.
	 * 
	 * @param siteResCateReqVo
	 * @return
	 */
	PagedResult<ResourcesList> getResByBookTypeInfos(Integer pageNo, Integer pageSize, Integer resultType, SiteResCateReqVo siteResCateReqVo)
			throws Exception;

	/**
	 * 通过资源分类id和year获取同一个资源分类id同一个年的报刊资源列表.
	 * 
	 * @param magazinesYearListReqVo
	 * @return
	 */
	PagedResult<ResourceYearInfo> getMagazinesYearListByPage(MagazinesYearListReqVo magazinesYearListReqVo);

	/**
	 * 通过资源分类id和year获取同一个资源分类id同一个年的报刊资源列表总数.
	 * 
	 * @param magazinesYearListReqVo
	 * @return
	 */
	Integer getMagazinesYearListCount(MagazinesYearListReqVo magazinesYearListReqVo);

	/**
	 * 通过资源id获取看绘本详情及其它绘本信息.
	 * 
	 * @param resCategoryReqVo
	 * @return
	 */
	ResourceByMagazines getResourceByBooks(ResCategoryReqVo resCategoryReqVo) throws Exception;

	/**
	 * 通过资源id获取看绘本详情及其它绘本信息.
	 * 
	 * @param resCategoryReqVo
	 * @return
	 */
	ResourceByMagazines getResourceByVideos(ResCategoryReqVo resCategoryReqVo) throws Exception;

	/**
	 * 获取同一个分类的其它绘本或不为同一个分类的其它分类的绘本集合.
	 * 
	 * @param siteResCateReqVo
	 * @return
	 */
	PagedResult<ResourcesList> getResByVideosTypeInfos(Integer pageNo, Integer pageSize, Integer resultType, SiteResCateReqVo siteResCateReqVo)
			throws Exception;

	/**
	 * 通过资源分类id获取同一个分类中其它绘本资源列表总数.
	 * 
	 * @param siteResCateReqVo
	 * @return
	 */
	Integer getIdenticalResByBooksTypeInfosCount(SiteResCateReqVo siteResCateReqVo);

	/**
	 * 通过资源分类id获取不同分类中其它绘本资源列表总数.
	 * 
	 * @param siteResCateReqVo
	 * @return
	 */
	Integer getNotIdenticalResByBooksTypeInfosCount(SiteResCateReqVo siteResCateReqVo);

	/**
	 * 通过资源分类id获取同一个分类中其它动画资源列表总数.
	 * 
	 * @param siteResCateReqVo
	 * @return
	 */
	Integer getIdenticalResByVideoTypeInfosCount(SiteResCateReqVo siteResCateReqVo);

	/**
	 * 通过资源分类id获取不同分类中其它动画资源列表总数.
	 * 
	 * @param siteResCateReqVo
	 * @return
	 */
	Integer getNotIdenticalResByVideoTypeInfosCount(SiteResCateReqVo siteResCateReqVo);

	/**
	 * 通过资源分类id获取报刊资源列表信息
	 * 
	 * @param resCategoryId
	 * @return
	 */
	PagedResult<ResourcesList> getMagazinesTypeResourcesListByResCategoryId(WebsiteResListReqQueryVo resListQueryVo) throws Exception;

	/**
	 * 通过资源分类id获取报刊资源列表总数.
	 * 
	 * @param resCategoryId
	 * @return
	 */
	Integer getMagazinesTypeResCount(WebsiteResListReqQueryVo resListQueryVo) throws Exception;

	/**
	 * 通过资源分类id获取绘本资源列表信息
	 * 
	 * @param resCategoryId
	 * @return
	 */
	PagedResult<ResourcesList> getBooksTypeResourcesListByResCategoryId(WebsiteResListReqQueryVo resListQueryVo);

	/**
	 * 通过资源分类id获取绘本资源列表总数.
	 * 
	 * @param resCategoryId
	 * @return
	 */
	Integer getBooksTypeResCount(WebsiteResListReqQueryVo resListQueryVo);

	/**
	 * 通过资源分类id获取动画资源列表信息
	 * 
	 * @param resCategoryId
	 * @return
	 */
	PagedResult<ResourcesList> getVideosTypeResourcesListByResCategoryId(WebsiteResListReqQueryVo resListQueryVo);

	/**
	 * 通过资源分类id获取动画资源列表总数.
	 * 
	 * @param resCategoryId
	 * @return
	 */
	Integer getVideosTypeResCount(WebsiteResListReqQueryVo resListQueryVo);

	List<PavilionColumns> getPavilionColumnsListByCondition(PavilionColumnsSortVo pavilionColumnsSortVo);

	void updatePavilionColumnsListByCondition(PavilionColumnsSortVo pavilionColumnsSortVoUP);

	/**
	 * 获取资源分类信息
	 * 
	 * @param menuId
	 * @return
	 */
	MenusRelationsInfo getMenusRelationsInfoForWebChat(RelationsReqVo relationsReqVo) throws Exception;

	List<MenuPavilionColumnsVo> getMenusResourcesListForWebChart(RelationsReqVo relationsReqVo);

}